﻿/// <reference path="../../../helpers/validationHelper.js" />
YUI.add('editar-cuestionario-view', function (Y) {
    'use strict';
    Y.EditarCuestionario = Y.Base.create('EditarCuestionario', Y.View, [], {
        templateIsCharged: false,
        loadTemplate: function () {
            if (this.template == '') {
                var that = this,
                validator = null,
                request = Y.io('/ExcellentProject/scripts/views/cuestionarios/cuestionarios/templates/editar.html', {
                    on: {
                        complete: function (id, response) {
                            that.templateIsCharged = true;
                            that.template = response.responseText;
                            try {
                                $('#table_id').parent().replaceWith('');
                            }
                            catch (err) {
                                console.log(err);
                            }
                            that.render();
                        }
                    },
                    failure: function (id, response) {
                        alert(response)
                    }
                })
            }
        },
        events: {
            '.guardar': {
                click: 'guardarCuestionario'
            },

            '#agregarPregunta': {
                click: 'agregarPreguntaACuestionario'
            }
        },

        render: function () {
            this.loadTemplate();
            if (this.templateIsCharged) {
                var contentTemplate = Y.Handlebars.compile(this.template);
                this.get('container').setHTML(contentTemplate(this.get('model').getAttrs()));
                if (this.get('model').get('IdCuestionario') != 0) {
                    var statusListSelected = Y.one('#estado');
                    statusListSelected.set('value', this.get('model').get('Estado'));
                }
                $('#inputDescripcion').alphanum();
                $('#inputNumeroPreguntas').format({allow_negative:false});
                $('#inputCalificacionMaxima').format({allow_negative:false});
                $('#inputCalificacionMinima').format({allow_negative:false});
                $.fn.datetimepicker.defaults = {
                    pickDate: true,                 //en/disables the date picker
                    pickTime: true,                 //en/disables the time picker
                    useMinutes: true,               //en/disables the minutes picker
                    useSeconds: true,               //en/disables the seconds picker
                    useCurrent: true,               //when true, picker will set the value to the current date/time     
                    minuteStepping: 1,               //set the minute steppin
                    minDate: '1/1/2014',               //set a minimum date
                    maxDate: '1/1/2050',   //set a maximum date (defaults to today +100 years)
                    showToday: true,                 //shows the today indicator
                    language: 'en',                  //sets language locale
                    defaultDate: "",                 //sets a default date, accepts js dates, strings and moment objects
                    disabledDates: [],               //an array of dates that cannot be selected
                    enabledDates: [],                //an array of dates that can be selected
                    icons: {
                        time: 'fa fa-time',
                        date: 'fa fa-calendar',
                        up: 'fa fa-chevron-up',
                        down: 'fa fa-chevron-down'
                    },
                    useStrict: false,               //use "strict" when validating dates  
                    sideBySide: false,              //show the date and time picker side by side
                    daysOfWeekDisabled: []          //for example use daysOfWeekDisabled: [0,6] to disable weekends 
                };
                $('#datetimepicker1').datetimepicker();
                //carga de preguntas
                var preguntas = new Y.ConsultaPreguntas();
                var that = this, a = preguntas.load({ idCuestionario: this.get('model').get('IdCuestionario') }, function () {

                    var table = $('#table_id').DataTable({
                        "language": {
                            "search": "Buscar:",
                            "lengthMenu": "Items por página: _MENU_",
                            "info": "Items del _START_ al _END_ de _TOTAL_ items.",
                            "emptyTable": "Items no disponibles.",
                            "infoEmpty": "0 ítems.",
                            "paginate": {
                                "next": "Siguiente",
                                "previous": "Anterior",
                                "first": "Primero",
                                "last": "Ultimo"
                            }
                        },
                        "paging": true,
                        retrieve: true,
                        data: preguntas._items,
                        "rowCallback": function (row, aData) {
                            $('td:eq(6)', row).html('<a title="Editar" class="btn btn-warning" href="/cuestionariopreguntas/' + aData.get('IdPregunta') + '">' +
                            '<i class="fa fa-pencil">' + '</i>' + '<span class="tooltip"></span></a>');
                            $('td:eq(7)', row).html('<a title="Eliminar" class="btn btn-danger" href="/cuestionariopreguntas/eliminar/' + aData.get('IdPregunta') + '/' + aData.get('IdCuestionario') + '" >' +
                           '<i class="fa fa-trash-o">' + '</i>' + '<span class="tooltip"></span></a>');
                        },
                        columns: [
                            { data: '_state.data.Enunciado.lazy.value', width: "50em" },
                            { data: '_state.data.CodigoTipo.lazy.value' },
                            { data: '_state.data.CodigoCategoria.lazy.value' },
                            { data: '_state.data.CodigoArea.lazy.value' },
                            { data: '_state.data.Calificacion.lazy.value' },
                            { data: '_state.data.Estado.lazy.value' },
                            { data: '_state.data.IdPregunta.lazy.value' },
                            { data: '_state.data.IdPregunta.lazy.value' }
                        ]
                    });
                    table.draw();
                });

            }
        },

        agregarPreguntaACuestionario: function (ev) {
            ev.preventDefault();
            Y.one('#preguntas').toggleClass('has-warning');

            Y.one('#preguntas').toggleClass('has-success', true);

            // Y.one('#navigatePregunta').set('href', '/seleccionarcuestionariopreguntas/' + )

            var preguntasMaximas = parseInt(Y.one('#inputNumeroPreguntas').get('value'));
            if (parseInt(amplify.store('numeroPreguntas')) == preguntasMaximas) {
                alert('No se pueden ingresar mas preguntas incremente el maximo establecido para seguir agregando.');
                return;
            } else {

                amplify.store('numeroPreguntas', parseInt(amplify.store('numeroPreguntas')) + 1);
                Y.one('#navigatePregunta').simulate("click");
            }
        },

        guardarCuestionario: function (ev) {
            var model = this.get('model');

            var requiredMessages = '';

            //validacion de campos requeridos

              if (Y.one('#inputDescripcion').get('value').trim() == '') {
                Y.one('#descripcionGroup').toggleClass('has-success')
                Y.one('#descripcionGroup').toggleClass('has-error', true)
                requiredMessages += ' - Descripción requerida. <br/>';

            } else {
                Y.one('#descripcionGroup').removeClass('has-error')
                Y.one('#descripcionGroup').toggleClass('has-success', true)
            }

            if (Y.one('#inputCodigoArea').get('value') == '') {
                Y.one('#codigoareaGroup').toggleClass('has-success')
                Y.one('#codigoareaGroup').toggleClass('has-error', true)
                requiredMessages += ' - Código de Área requerido. <br/>';

            } else {
                Y.one('#codigoareaGroup').removeClass('has-error')
                Y.one('#codigoareaGroup').toggleClass('has-success', true)
            }

            if (Y.one('#inputFechaCreacion').get('value') == '') {
                Y.one('#fechanumpregGroup').toggleClass('has-success')
                Y.one('#fechanumpregGroup').toggleClass('has-error', true)
                requiredMessages += ' - Fecha de Creación requerida. <br/>';

            } else {
                Y.one('#fechanumpregGroup').removeClass('has-error')
                Y.one('#fechanumpregGroup').toggleClass('has-success', true)
            }

            if (Y.one('#inputNumeroPreguntas').get('value') == '') {
                Y.one('#fechanumpregGroup').toggleClass('has-success')
                Y.one('#fechanumpregGroup').toggleClass('has-error', true)
                requiredMessages += ' - Número de Preguntas requerido. <br/>';

            } else {
                Y.one('#fechanumpregGroup').removeClass('has-error')
                Y.one('#fechanumpregGroup').toggleClass('has-success', true)
            }

            if (requiredMessages != '') {
                bootbox.dialog({
                    message: requiredMessages,
                    title: "Problemas de Validación",
                    show: true,
                    backdrop: true,
                    closeButton: true,
                    animate: true,

                    className: "my-modal",
                    buttons: {
                        success: {
                            label: "Ok",
                            className: "btn btn-info",

                            callback: function () { }
                        }
                    }
                });
                return;
            }

            model.setAttrs({
                IdCuestionario: Y.one('#id').get('value'),
                IdDocente: amplify.store('datosDocente').Id,
                Descripcion: Y.one('#inputDescripcion').get('value').trim(),
                FechaCreacion: Y.one('#inputFechaCreacion').get('value'),
                CodigoArea: Y.one('#inputCodigoArea').get('value').trim(),
                NumeroPreguntas: Y.one('#inputNumeroPreguntas').get('value').trim(),
                CalificacionMaxima: Y.one('#inputCalificacionMaxima').get('value').trim(),
                Estado: Y.one('#estado').get('value').trim()
            });
            var options = null;
            if (model.get('IdCuestionario') != 0)
                options = { action: 'update', idCues: model.get('IdCuestionario') };
            else {
                options = { urlName: 'saveOption' };
                model.set('IdCuestionario', 0)
            }
            var that = this, a = model.save(options, function (err, response) {
                if (err != null)
                    bootbox.dialog({
                        message: "Ocurrieron problemas al actualizar el cuestionario seleccionado",
                        title: "Problemas al registrar el cuestionario",
                        show: true,
                        backdrop: true,
                        closeButton: true,
                        animate: true,

                        className: "my-modal",
                        buttons: {
                            success: {
                                label: "Ok",
                                className: "btn btn-danger",

                                /**
                                 * @optional Function
                                 * the callback to invoke when this button is clicked
                                 */
                                callback: function () { }
                            }
                        }
                    });
                else {

                    Y.one('#navigatePregunta').set('href', '/seleccionarcuestionariopreguntas/' + JSON.parse(response.responseText).IdCuestionario)

                    bootbox.dialog({
                        message: "<h5>Cuestionario grabado</h5>",
                        title: "Confirmación",
                        show: true,
                        backdrop: true,
                        closeButton: true,
                        animate: true,

                        className: "my-modal",
                        buttons: {
                            success: {
                                label: "Ok",
                                className: "btn btn-success",

                                callback: function () { }
                            }
                        }
                    });
                }
            });


        }
    })

}, '0.0.0.1', { requires: ['view', 'handlebars', 'handlebars-select-helper', 'node', 'pregunta-model-list', 'pregunta-model', 'event', 'node-event-simulate'] })